Collections এর জন্য Wildcards এবং Bounded Types এর প্রয়োগ

Java Technologies - জাভা জেনেরিক্স (Java Generics) - Generics এর সাথে Collections Framework
213

জাভায় জেনেরিক্স ব্যবহার করার সময় Wildcards এবং Bounded Types দুটি গুরুত্বপূর্ণ ধারণা। এগুলো Collections Framework-এর সাথে ব্যবহার করে টাইপ-সেইফ, ফ্লেক্সিবল এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা যায়।


Wildcards:

Wildcards (?) ব্যবহার করে এমন জেনেরিক টাইপগুলো তৈরি করা যায় যেগুলো অজানা বা পরিবর্তনশীল হতে পারে।

Wildcards এর ধরণ:

  1. Unbounded Wildcard (?): এটি ব্যবহার করা হয় যখন কোনো নির্দিষ্ট টাইপের প্রতি সীমাবদ্ধতা নেই।

    public void printList(List<?> list) {
        for (Object obj : list) {
            System.out.println(obj);
        }
    }
    

    উদাহরণ:

    List<String> stringList = Arrays.asList("Java", "Generics", "Wildcard");
    List<Integer> intList = Arrays.asList(10, 20, 30);
    
    printList(stringList); // Output: Java, Generics, Wildcard
    printList(intList);    // Output: 10, 20, 30
    
  2. Upper Bounded Wildcard (<? extends Type>): এটি ব্যবহার করা হয় যখন একটি টাইপ নির্দিষ্ট ক্লাস বা তার সাবক্লাস হতে পারে।

    public void printNumbers(List<? extends Number> list) {
        for (Number num : list) {
            System.out.println(num);
        }
    }
    

    উদাহরণ:

    List<Integer> integers = Arrays.asList(1, 2, 3);
    List<Double> doubles = Arrays.asList(1.1, 2.2, 3.3);
    
    printNumbers(integers); // Output: 1, 2, 3
    printNumbers(doubles);  // Output: 1.1, 2.2, 3.3
    
  3. Lower Bounded Wildcard (<? super Type>): এটি ব্যবহার করা হয় যখন একটি টাইপ নির্দিষ্ট ক্লাস বা তার সুপারক্লাস হতে পারে।

    public void addNumbers(List<? super Integer> list) {
        list.add(10);
        list.add(20);
    }
    

    উদাহরণ:

    List<Number> numbers = new ArrayList<>();
    addNumbers(numbers);
    
    System.out.println(numbers); // Output: [10, 20]
    

Bounded Types:

Bounded Types ব্যবহার করা হয় যখন একটি জেনেরিক টাইপকে নির্দিষ্ট টাইপের মধ্যে সীমাবদ্ধ করতে হয়।

Upper Bound (<T extends Type>)

public <T extends Number> double calculateSum(List<T> list) {
    double sum = 0.0;
    for (T num : list) {
        sum += num.doubleValue();
    }
    return sum;
}

উদাহরণ:

List<Integer> integers = Arrays.asList(1, 2, 3, 4);
List<Double> doubles = Arrays.asList(1.1, 2.2, 3.3);

System.out.println(calculateSum(integers)); // Output: 10.0
System.out.println(calculateSum(doubles));  // Output: 6.6

Multiple Bounds (<T extends Class & Interface>):

public <T extends Number & Comparable<T>> T findMax(T a, T b) {
    return a.compareTo(b) > 0 ? a : b;
}

উদাহরণ:

System.out.println(findMax(10, 20));   // Output: 20
System.out.println(findMax(3.14, 2.71)); // Output: 3.14

Wildcards vs Bounded Types:

AspectWildcards (?)Bounded Types (<T extends Type>)
UsageFlexible and used in method argumentsUsed in method signatures and class definitions
Type InformationWorks with unknown typesWorks with specific bounded types
Common Use CasesReading data from collectionsPerforming operations on specific types

উদাহরণ: Collections-এ Wildcards এবং Bounded Types

import java.util.*;

public class WildcardAndBoundedTypesExample {
    // Upper Bounded Wildcard Example
    public static void displayNumbers(List<? extends Number> list) {
        for (Number num : list) {
            System.out.println(num);
        }
    }

    // Lower Bounded Wildcard Example
    public static void addElements(List<? super Integer> list) {
        list.add(1);
        list.add(2);
        list.add(3);
    }

    public static void main(String[] args) {
        List<Integer> integers = new ArrayList<>(Arrays.asList(10, 20, 30));
        List<Number> numbers = new ArrayList<>();
        
        displayNumbers(integers); // Output: 10, 20, 30
        addElements(numbers);
        
        System.out.println(numbers); // Output: [1, 2, 3]
    }
}

Wildcards এবং Bounded Types জেনেরিক্সে ফ্লেক্সিবিলিটি এবং টাইপ সেফটি প্রদান করে। Collections Framework-এ তাদের ব্যবহারে কোড আরো রিডেবল, পুনঃব্যবহারযোগ্য এবং কার্যকরী হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...